1>>2为什么是0呢,如何得到0.5呢
来源:百度知道 编辑:UC知道 时间:2024/06/14 01:47:47
每右移1位,相当于除2,但是不能为小数。
原因是数字在内存中以2进制存放的,只有0和1。
例如7,内存中为111,右移1位就变成11了,再移就变成1,再移就是0。
1的二进制是 0000……0001
往右移2位, 000000……00(01)括号里的01没有了,所以是0
得到0.5只能1.0/2,而不能用整形移位,整形移位还会是整形。
0.5不是整数,float和double的二进制表示方法跟int是不一样的
这个>>是位运算符,意思是把1的二进制数码整体往右移2位,前面的空位用0补上,所以1>>2是0,0.5是不能这么得到的.
1/2=0.5
>>这个移位符号
X>>Y就是把X右移多少位
要想得到0.5
这样定义
float i = 1, j= 2, k=0;
k = i/j;
浮点数的表示方法与整数不一样的. 1右移了两位, 高位用0补上, 自然最后就是0了嘛.